package kuonjisai.swing.component;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

import ch.randelshofer.quaqua.DefaultBrowserCellRenderer;

public class J22_JTable extends JFrame{

	
	public  J22_JTable() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(250, 250, 450, 350);
		setLayout(new  BorderLayout());
		setTitle("JTable 맛배기 ㅎㅎ" );
		
		// 스크롤 영역 생성 ( 반드시 필요 )
		JScrollPane scroll = new JScrollPane();
		scroll.setPreferredSize(new Dimension( 400, 300 ));
		getContentPane().add(scroll);
		
		
		// JTable에 표시할 데이터들과 제목을 정의하기 위해
		// DefaultTableModel 클래스 생성
		// 수정불가 Tablemodel 작성 ( 내부 클래스 ) 
		DefaultTableModel model = new DefaultTableModel(){
		// is 치고 컨트롤 스페이스	
		@Override
		public boolean isCellEditable(int row, int column) {
		
			return false;
		}	
			
		};
		
		
		
		
		// 제목 작성
		String  title[] = { "우홋! ","우홋! ","우홋! ","우홋! ","우홋! ", };
		model.setColumnIdentifiers( title );
		
		// 본문행  - 속도 메모리 문제
		// model.addRow( new String[]{ "12", "은.", "남.", "자.", "♥"} );
		for ( int i = 1;  i <=50; i++){
		model.addRow( new String[]{ i + "" , " 붉은것은", "3배더", "빠릅니다", "TRANS_ARMS"} ); 
		}
		
		// JTable 생성하고 tablemodel에 추가
		JTable table = new JTable();
		table.setModel( model );
		
		// 테이블의 셀 내용을 가운데로 정렬
		// 테이블 셀의 세부속성을 상세히 제어하려면
		//  DefaultTableCellRenderer 클래스를 사용
		//  정렬, 크기조절, 그림삽입, 다양한 컴퍼넌트 삽입등의
		// 고급효과는 DefaultTableCellRenderer 없이는 처리 불가
		DefaultTableCellRenderer cell = new DefaultTableCellRenderer();
		cell.setHorizontalAlignment( JLabel.CENTER );		// 가운데 정령
	/*	for ( int i = 0; i <=4; i++ ){
		table.getColumnModel().getColumn(i).setCellRenderer(cell);		
		}*/
		table.getColumnModel().getColumn(0).setCellRenderer(cell);		
		table.getColumnModel().getColumn(2).setCellRenderer(cell);		
		table.getColumnModel().getColumn(3).setCellRenderer(cell);		
		table.getColumnModel().getColumn(4).setCellRenderer(cell);		
		
		
		// JTable에 마우스 더블클릭 이벤트 추가
			table.addMouseListener( new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if ( e.getClickCount() == 2 ){			// 더블클릭하면
					JTable table = (JTable) e.getSource();
					int row = table.getSelectedRow();//선택행
					
					int col = table.getSelectedColumn();		// 선택열
					String val = (String) table.getValueAt(row, col);
					String msg = row + "/" + col + "/" + val + "\n" + "더브루 클릭크";
					JOptionPane.showMessageDialog(null, msg);
				}
			}
			
		});
		
		
		// 스크롤페인의 뷰영역에 JTable 추가
		scroll.setViewportView( table );
		
		// 화면에 표시
		
		setVisible(true);
	}
	
	
	
	
	public static void main(String []args){
		EventQueue.invokeLater( new Runnable() {
			
			@Override
			public void run() {
				new J22_JTable();
				
			}
		});
		
		
	
	
	} // main
	
	
	
	
	
}//class
